classdef Lattice < handle
  %LATTICE Summary of this class goes here
  %   Detailed explanation goes here
  
  properties
    LatticeVectors;  % the lattice vectors are ordered [a_1; a_2; a_3];
  end

  properties(Dependent = true)
    ReciprocalLatticeVectors;
  end
  
  methods
    function lo = Lattice(latticeVectors)
      lo.LatticeVectors = latticeVectors;
    end
    
    function reciprocalLatticeVector = get.ReciprocalLatticeVectors(lo)
      reciprocalLatticeVector = (2*pi*(inv(lo.LatticeVectors')));
    end
    
  end
  
  methods(Static)
    abc  = calc_axis(axisLength,angle,varargin)
      
    test();
    
    function[lo] = create(axisLengths, angles)
      %  axis  - [a,b,c] --> length of the crystallographic axes
      %  angle - [alpha,beta,gamma] --> angle between the axes
      [abc] = Lattice.calc_axis(axisLengths, angles);
      lo = Lattice(abc);  
    end

    lo = create_hematite_rhombohedral()
        
  end
  
  
end

